; Music of Boy Racer (1987) (Alligata Software)
; Ripped by Megachur the 20/11/2008

; Need System Vectors

	write "BOYRACER.BIN"

music_date_rip	equ &14b8
music_adr	equ &4010
first_theme	equ 0
last_theme	equ 0	; 0 -> 0

	read "music_header_v1_0.asm"

	jp l402f	; init music
	jp l404c	; stop music
.l4016
	db #00
.l4017
	dw l429a
.l401d equ $ + 4
.l401b equ $ + 2
.l401a equ $ + 1
.l4019
	db #00,#00,#00,#00,#00,#00
.l401f
	dw l434e
.l4025 equ $ + 4
.l4023 equ $ + 2
.l4022 equ $ + 1
.l4021
	db #00,#00,#00,#00,#00,#00
.l4027
	dw l43f8
.l402d equ $ + 4
.l402b equ $ + 2
.l402a equ $ + 1
.l4029
	db #00,#00,#00,#00,#00,#00
;
.init_music
.l402f
;
	ld a,(l4016)
	or a
	ret nz
	di
	call l4094
	ld hl,l41b4
	ld de,l4063
	ld c,#ff
	ld b,#81
	call #bcd7
	ld a,#01
	ld (l4016),a
	ei
	ret
;
.stop_music
.l404c
;
	ld a,(l4016)
	or a
	ret z
	ld hl,l41b4
	call #bcdd
	ld c,#3f
	ld a,#07
	call #bd34
	xor a
	ld (l4016),a
	ret
;
.play_music
.l4063
;
	ld a,(l401a)
	or a
	call z,l40b4
	ld a,(l401a)
	dec a
	ld (l401a),a
	ld a,(l4022)
	or a
	call z,l40dc
	ld a,(l4022)
	dec a
	ld (l4022),a
	ld a,(l402a)
	or a
	call z,l40ff
	ld a,(l402a)
	dec a
	ld (l402a),a
	call l4137
	call l416a
	ret
.l4094
	ld hl,l429a
	ld (l4017),hl
	ld hl,l434e
	ld (l401f),hl
	ld hl,l43f8
	ld (l4027),hl
	xor a
	ld (l401a),a
	ld (l4022),a
	ld (l402a),a
	ret
.l40b1
	call l4094
.l40b4
	ld hl,(l4017)
	ld a,(hl)
	cp #ff
	jp z,l40b1
	and #3f
	push hl
	call l4159
	pop hl
	ld (l401b),de
	ld a,(hl)
	inc hl
	ld (l4017),hl
	and #c0
	call l4122
	ld (l401a),a
	ld hl,l423d
	ld (l401d),hl
	ret
.l40dc
	ld hl,(l401f)
	ld a,(hl)
	and #3f
	push hl
	call l4159
	pop hl
	ld (l4023),de
	ld a,(hl)
	inc hl
	ld (l401f),hl
	and #c0
	call l4122
	ld (l4022),a
	ld hl,l424f
	ld (l4025),hl
	ret
.l40ff
	ld hl,(l4027)
	ld a,(hl)
	and #3f
	push hl
	call l4159
	pop hl
	ld (l402b),de
	ld a,(hl)
	inc hl
	ld (l4027),hl
	and #c0
	call l4122
	ld (l402a),a
	ld hl,l4261
	ld (l402d),hl
	ret
.l4122
	ld hl,l4239
	srl a
	srl a
	srl a
	srl a
	srl a
	srl a
	ld e,a
	ld d,#00
	add hl,de
	ld a,(hl)
	ret
.l4137
	ld hl,(l401d)
	ld a,(hl)
	ld (l4019),a
	inc hl
	ld (l401d),hl
	ld hl,(l4025)
	ld a,(hl)
	ld (l4021),a
	inc hl
	ld (l4025),hl
	ld hl,(l402d)
	ld a,(hl)
	ld (l4029),a
	inc hl
	ld (l402d),hl
	ret
.l4159
	ld hl,l41bd
	or a
	jp z,l4166
	sla a
	ld e,a
	ld d,#00
	add hl,de
.l4166
	ld e,(hl)
	inc hl
	ld d,(hl)
	ret
.l416a
	ld d,#00
	ld hl,(l401b)
	ld c,l
	call l41ac
	ld c,h
	call l41ac
	ld hl,(l4023)
	ld c,l
	call l41ac
	ld c,h
	call l41ac
	ld hl,(l402b)
	ld c,l
	call l41ac
	ld c,h
	call l41ac
	inc d
	inc d
	ld bc,(l4019)
	call l41ac
	ld bc,(l4021)
	call l41ac
	ld bc,(l4029)
	call l41ac
	ld c,#38
	ld d,#07
	call l41ac
	ret
.l41ac
	ld a,d
	push de
	call #bd34
	pop de
	inc d
	ret
.l41b4
	db #00,#00,#00,#00,#00,#00,#00,#00
.l41bd equ $ + 1
	db #00,#00,#00
	dw #03bc,#0386,#0353,#0324
	dw #02f6,#02cc,#02a4,#027e
	dw #025a,#0238,#0218,#01fa
	dw #01de,#01c3,#01aa,#0192
	dw #017b,#0166,#0152,#013f
	dw #012d,#011c,#010c,#00fd
	dw #00ef,#00e1,#00d5,#00c9
	dw #00be,#00b3,#00a9,#009f
	dw #0096,#008e,#0086,#007f
	dw #0077,#0071,#006a,#0064
	dw #005f,#0059,#0054,#0050
	dw #004b,#0047,#0043,#003f
	dw #003c,#0038,#0035,#0032
	dw #002f,#002d,#002a,#0028
	dw #0026,#0024,#0022,#0020
	dw #001e
.l423d equ $ + 4
.l4239
	db #18,#0c,#06,#03,#0f,#0f,#0c,#0a
	db #08,#08,#08,#08,#08,#08,#08,#08
.l424f equ $ + 6
	db #08,#07,#06,#05,#04,#03,#08,#0d
	db #0d,#0d,#0d,#0d,#0d,#0d,#0d,#0d
	db #0d,#0d,#0d,#0d,#0d,#0d,#0d,#0d
.l4261
	db #0f,#05,#0d,#05,#0b,#05,#0a,#05
	db #09,#05,#08,#05,#07,#05,#06,#05
	db #05,#05,#2f,#01,#23,#06,#2f,#01
	db #23,#06,#00,#2f,#22,#06,#00,#2e
	db #22,#06,#00,#2e,#22,#06,#2e,#06
	db #22,#06,#25,#06,#22,#06,#25,#06
	db #22,#06,#00,#25,#23,#06,#00,#20
.l429a equ $ + 1
	db #23,#ac,#a8,#a5,#ad,#a8,#a5,#ac
	db #a8,#a5,#ad,#a8,#a5,#ac,#a8,#a5
	db #ad,#a8,#a5,#ac,#a8,#a5,#ad,#a8
	db #a5,#b1,#ad,#aa,#b2,#ad,#aa,#b1
	db #ad,#aa,#b2,#ad,#aa,#b1,#ad,#aa
	db #b2,#ad,#aa,#b1,#ad,#aa,#b2,#ad
	db #aa,#b4,#b1,#ad,#b6,#b2,#ad,#b4
	db #b1,#ad,#b6,#b2,#ad,#b1,#b2,#af
	db #b1,#ad,#af,#a5,#a6,#a3,#a5,#a1
	db #a3,#97,#9a,#9e,#9c,#99,#95,#a3
	db #a6,#aa,#a8,#a5,#a1,#9c,#9f,#a3
	db #a1,#9e,#9a,#a8,#ab,#af,#ad,#aa
	db #a6,#a5,#a5,#a5,#a6,#a3,#a4,#a5
	db #a5,#a5,#a6,#a3,#a4,#a5,#a6,#a3
	db #a5,#a1,#a3,#a5,#a6,#a3,#a5,#a1
	db #a3,#52,#52,#52,#52,#52,#52,#4e
	db #4e,#4e,#4e,#4e,#4e,#4b,#4b,#4b
	db #4b,#4b,#4b,#4d,#4d,#4d,#4d,#4d
	db #4d,#52,#52,#52,#52,#52,#52,#4e
	db #4e,#4e,#4e,#4e,#4e,#4b,#4b,#4b
	db #4b,#4b,#4b,#4d,#4d,#4d,#4d,#4d
	db #4d,#ff,#00,#00,#25,#06,#25,#06
.l434e equ $ + 5
	db #22,#06,#00,#00,#28,#a0,#9c,#a0
	db #9c,#a0,#9c,#a0,#9c,#a0,#9c,#a0
	db #9c,#a0,#9c,#a0,#9c,#a0,#9c,#a0
	db #9c,#a0,#9c,#a0,#9c,#a5,#a1,#a5
	db #a1,#a5,#a1,#a5,#a1,#a5,#a1,#a5
	db #a1,#a5,#a1,#a5,#a1,#a5,#a1,#a5
	db #a1,#a5,#a1,#a5,#a1,#a8,#aa,#a8
	db #aa,#a8,#aa,#a8,#aa,#a8,#aa,#a8
	db #aa,#8d,#8e,#90,#8e,#90,#92,#90
	db #92,#94,#92,#94,#95,#8b,#8b,#8b
	db #8b,#8b,#8b,#8d,#8d,#8d,#8d,#8d
	db #8d,#8e,#8e,#8e,#8e,#8e,#8e,#90
	db #90,#90,#90,#90,#90,#99,#99,#99
	db #97,#97,#97,#95,#95,#95,#94,#94
	db #94,#92,#92,#92,#90,#90,#90,#8e
	db #8e,#8e,#8d,#8d,#8d,#5e,#61,#65
	db #6a,#6d,#71,#5a,#5e,#61,#66,#6a
	db #6d,#57,#5a,#5e,#63,#66,#6a,#59
	db #5c,#60,#65,#68,#6c,#5e,#61,#65
	db #6a,#6d,#71,#5a,#5e,#61,#66,#6a
	db #6d,#57,#5a,#5e,#63,#66,#6a,#59
.l43f8 equ $ + 7
	db #5c,#60,#65,#68,#6c,#00,#00,#8d
	db #8d,#8d,#8d,#8d,#8d,#8d,#8d,#8d
	db #8d,#8d,#8d,#8d,#8d,#8d,#8d,#8d
	db #8d,#8d,#8d,#8d,#8d,#8d,#8d,#92
	db #92,#92,#92,#92,#92,#92,#92,#92
	db #92,#92,#92,#92,#92,#92,#92,#92
	db #92,#92,#92,#92,#92,#92,#92,#95
	db #95,#95,#95,#95,#95,#95,#95,#95
	db #95,#95,#95,#94,#94,#94,#94,#94
	db #94,#94,#94,#94,#94,#94,#94,#97
	db #9a,#9e,#9c,#99,#95,#a3,#a6,#aa
	db #a8,#a5,#a1,#9c,#9f,#a3,#a1,#9e
	db #9a,#a8,#ab,#af,#ad,#aa,#a6,#99
	db #99,#99,#9a,#97,#98,#99,#99,#99
	db #9a,#97,#98,#99,#9a,#97,#99,#95
	db #97,#a5,#a6,#a3,#a5,#a1,#a3,#aa
	db #ac,#ad,#aa,#ac,#ad,#aa,#ac,#ad
	db #aa,#ac,#ad,#a6,#a8,#aa,#a6,#a8
	db #aa,#a6,#a8,#aa,#a6,#a8,#aa,#a3
	db #a5,#a6,#a3,#a5,#a6,#a3,#a5,#a6
	db #a3,#a5,#a6,#a5,#a7,#a8,#a5,#a7
	db #a8,#a5,#a7,#a8,#a5,#a7,#a8,#aa
	db #ac,#ad,#aa,#ac,#ad,#aa,#ac,#ad
	db #aa,#ac,#ad,#a6,#a8,#aa,#a6,#a8
	db #aa,#a6,#a8,#aa,#a6,#a8,#aa,#a3
	db #a5,#a6,#a3,#a5,#a6,#a3,#a5,#a6
	db #a3,#a5,#a6,#a5,#a7,#a8,#a5,#a7
	db #a8,#a5,#a7,#a8,#a5,#a7,#a8,#00
	db #00,#00,#00,#80,#28,#e1,#ac,#42
	db #8a,#c0,#b8,#43,#4c,#c1,#da,#62
	db #a6,#a3,#2c,#00,#d8,#60,#b4,#c1
	db #8a,#43,#46,#e2,#dc,#61,#26,#a0
	db #ca,#02,#44,#20,#4c,#83,#84,#e1
	db #5a,#40,#22,#68,#1a,#6d,#1c,#a2
	db #24,#43,#a2,#c1,#54,#20,#d2,#c2
	db #24,#e2,#32,#60,#24,#c3,#32,#49
	db #08,#c0,#d4,#21,#22,#aa,#12,#a5
	db #14,#ae,#16,#ae,#18,#ae,#1a,#65
	db #10,#6a,#12,#6e,#14,#6e,#16,#24
	db #32,#c4,#33,#08,#0c,#64,#14,#cc
	db #02,#eb,#02,#09,#0d,#64,#b8,#ad
	db #0a,#ec,#04,#0b,#04,#64,#56,#e2
	db #c8,#64,#56,#a8,#02,#02,#ac,#4d
	db #06,#a8,#02,#c4,#1c,#05,#1a,#0a
	db #0c,#05,#0e,#84,#1c,#e9,#06,#22
	db #a8,#a0,#b8,#29,#02,#63,#86,#e1
	db #28,#27,#07,#47,#07,#27,#07,#a2
	db #a8,#20,#26,#a9,#0e,#20,#a6,#83
	db #5a,#c1,#84,#22,#48,#a0,#c4,#20
	db #46,#a1,#94,#22,#b6,#a3,#54,#20
	db #d6,#82,#24,#e3,#ca,#21,#58,#a3
	db #84,#e0,#b6,#62,#4c,#e1,#96,#63
	db #28,#e0,#d4,#62,#4a,#e2,#a2,#49
	db #08,#a0,#4c,#23,#2c,#a1,#2c,#02
	db #82,#81,#9c,#03,#32,#80,#32,#07
	db #0c,#69,#06,#c2,#b4,#40,#28,#a1
	db #a6,#03,#b8,#81,#16,#02,#b2,#85
	db #00,#8a,#12,#8e,#14,#04,#12,#84
	db #b6,#e4,#32,#4d,#06,#ac,#12,#a4
	db #1c,#cb,#12,#08,#12,#2d,#12,#44
	db #3c,#6e,#12,#ed,#02,#04,#16,#68
	db #0c,#a4,#12,#0e,#02,#2d,#08,#88
	db #0b,#c4,#03,#2d,#0d,#64,#a8,#ed
	db #03,#28,#0d,#44,#a8,#84,#a6,#ac
	db #0a,#cb,#0a,#24,#a8,#4c,#04,#6b
	db #04,#a4,#d6,#22,#88,#80,#a6,#01
	db #48,#69,#04,#c3,#86,#29,#05,#49
	db #08,#c2,#a6,#29,#02,#60,#48,#c9
	db #04,#09,#08,#49,#0c,#a2,#86,#20
	db #d8,#81,#b4,#00,#bc,#81,#42,#e3
	db #4c,#40,#42,#c2,#cc,#23,#22,#80
	db #aa,#e2,#48,#49,#08,#a9,#05,#e0
	db #06,#e0,#0a,#20,#08,#20,#04,#80
	db #02,#80,#06,#e0,#04,#80,#04,#00
	db #00
;
.game_name
	db "Boy Racer",0
.game_year
	db "1987",0
.game_publisher
	db "Alligata Software",0
.music_author
	db "",0
.music_comment
	db "",0

	read "music_end_v1_0.asm"
